# Set the working directory to the project folder.
project_folder <- "."
setwd(project_folder)
library(Seurat)
library(ggplot2)
library(ggalluvial)
library(grid)
library(forcats)
library(see)
library(dplyr)
library(gghalves)
library(viridis)
library(stringr)
library(RColorBrewer)
library(kableExtra)
library(ggpubr)
library(rstatix)
library(ReactomePA)
library(clusterProfiler)
library(UCell)
library(EnhancedVolcano)
cols1 <- c(`0 CD8+ Eff mem (EM)` = "#A6CEE3", `1 CD8+ Eff cytotox (Ecyt)` = "#1F78B4",
`3 CD4+ Naive/SCM` = "#33A02C", `6 CD4+ Central/Effector memory (CM/EM)` = "#FDBF6F",
`9 γδ Tcells` = "#6A3D9A", `Proliferative cells` = "#F7D764")
cols2 <- c(`0 CD8+ Eff mem (EM)` = "#A6CEE3", `1 CD8+ Eff cytotox (Ecyt)` = "#1F78B4",
`2 Early prolif: HMGN+/HMGB+/PCNA+ cells` = "#B2DF8A", `3 CD4+ Naive/SCM` = "#33A02C",
`4 Early prolif: MCM3/5/7+ PCNA+ cells` = "#FB9A99", `5 Late prolif: histones enriched MKI67+ cells` = "#E31A1C",
`6 CD4+ Central/Effector memory (CM/EM)` = "#FDBF6F", `7 Ribosomal/Mitocondrial/Degradated cells` = "#FF7F00",
`8 Late prolif: CDK+/CDC+/AURKA+ MIK67+ cells` = "#CAB2D6", `9 γδ Tcells` = "#6A3D9A")
cols3 <- c(`CAR+` = "#66c2a5", `CAR-` = "#fc8d62")
cols4 <- c("#264653", "#2a9d8f", "#e9c46a", "#f4a261", "#e76f51")
cols5 <- c(IP = "#4E6AAB", Peak = "#e78ac3")
cols6 <- c(CD4 = "#147D2C", CD8 = "#F5C936", Unknown = "#7f7f7f", `CD4- CD8-` = "#38369A")
cols7 <- c("#F8766D", "#00BA38", "#619CFF")
cols8 <- c("#E69F00FF", "#56B4E9FF", "#009E73FF", "#F0E442FF")
integrated.obj <- readRDS("integrated.obj.rds")
exhaustion_genes <- c("TOX", "PDCD1", "LAG3", "TIGIT", "CASP8", "HAVCR2", "CTLA4",
"PTPN11", "CD160", "CD244")
# 'JAK1','STAT1'
integrated.obj <- AddModuleScore(object = integrated.obj, features = list(exhaustion_genes),
name = "Exh.MGM")
FeaturePlot(integrated.obj, features = exhaustion_genes)
Yost.markers <- read.csv("bcc_tcell_top100_markers_Yost_et al.txt", sep = "\t")
Yost.markers2 <- Yost.markers[Yost.markers$cluster == "CD8_ex", ]
signatures <- list(Exhausted_Wherry_2007 = c("AARD", "ACADVL", "ACKR3", "ADAM7",
"ADCY6", "ADGRG1", "AFP", "AHR", "ALCAM", "ALOXE3", "ANXA3", "AOPEP", "APOBEC2",
"ART1", "ATP5IF1", "ATP5MF", "AUH", "BAAT", "BCL2L11", "BCL3", "BLK", "BTK",
"CANX", "CCDC28B", "CCDC93", "CCR6", "CCRL2", "CD22", "CD244", "CELA1", "CELF4",
"CEP250", "CFH", "CFHR2", "CISH", "CKMT1B", "CKMT2", "CLIC4", "COCH", "CORO2B",
"CRYZ", "CSF1", "CSRP1", "CTSE", "CUBN", "CXCR2", "CXCR5", "CYTH3", "DDIT4",
"DHRS7B", "DLG3", "DOCK7", "DPP7", "EEA1", "EFNB3", "EGR2", "ELK1", "ENTPD1",
"EOMES", "EPCAM", "ERCC5", "ETV1", "FAM171A1", "FAM207A", "FASLG", "FKBP10",
"FLNA", "FLT3", "FSTL1", "GAMT", "GAPDHS", "GATA1", "GCM2", "GCSAM", "GDNF",
"GPD2", "GPM6B", "GRIA1", "GRM8", "GSX1", "GTF3C4", "GZMB", "H1-4", "H1-5", "HAO2",
"HIF1A", "HLA-DMA", "HMGA2", "HOXB8", "HOXC6", "HOXD10", "HSD3B7", "HSPA4L",
"IFI27L2", "IFIH1", "IL10", "IL1A", "IL1RN", "IMMT", "ITGAV", "KCNAB1", "KCNU1",
"KCTD9", "KHK", "KRT27", "LAMC1", "LAT2", "LCLAT1", "LGMN", "LHPP", "LITAF",
"LRP10", "LY75", "LY86", "MAP2", "MC5R", "MCAM", "MFHAS1", "MKI67", "MMP14",
"MRPL48", "MRPS2", "MS4A1", "MYCL", "MYO6", "MYRF", "NAB2", "NAT2", "NDUFB4",
"NDUFS4", "NEFH", "NELFE", "OSMR", "PARP1", "PAWR", "PERP", "PLA2R1", "PLOD3",
"PLSCR1", "POLR2C", "PRDM1", "PRL", "PROX1", "PRR15", "PRRC1", "PTCH1", "PTMS",
"PTPN11", "PTPRA", "PTPRJ", "RGS16", "RPRD1B", "RPS14", "RUNX1T1", "SAPCD1",
"SCGB1A1", "SCN7A", "SEC14L1", "SELP", "SFRP2", "SGO1", "SHMT2", "SLC27A4", "SLC3A1",
"SLC4A7", "SLC4A8", "SPIC", "SPOCK1", "SPOCK2", "SPRR2A", "ST6GALNAC2", "STRA6",
"SURF4", "SYPL1", "TBL1X", "TCF7L1", "TERF1", "TFDP1", "TG", "THEG", "TLN1",
"TLR7", "TM4SF1", "TMEM150A", "TMEM214", "TMEM266", "TNFRSF4", "TWSG1", "VAMP5",
"VMP1", "VNN1", "WDR55", "WFS1", "WIZ", "WNK2", "XCR1", "YAP1", "ZNF292", "ZNF35",
"ZNF821"), Exhausted_Carmona_2019 = c("CCL3", "TNFRSF9", "RGS16", "DUT", "PRF1",
"MT1A", "CCL4", "TIGIT", "PDCD1", "ANXA2", "TNFRSF4", "LAG3", "SAMSN1", "RGS2",
"TOX", "BHLHE40", "STMN1", "RPS27L", "LITAF", "TXN", "HAVCR2", "HILPDA", "NR4A2",
"2810417H13RIK", "CASP3", "SERPINA3", "IL2RB", "PGLYRP1", "NAP1L1", "CENPA",
"COX17", "IRF8", "PLEK", "NRGN", "SH2D2A", "CTLA4", "STAT3", "HSP90B1", "MMD",
"CDK6", "IFNG", "AA467197", "CST7", "SERPINB6", "GZMB", "UHRF2", "HIST1H2AP",
"RBPJ", "HMGB1", "S100A4", "VAMP8", "TPI1", "BCL2A1", "RAN", "NRP1", "VIM", "GPR65",
"CKS1B", "LAT2", "D16ERTD472E", "HNRNPA1", "CDKN2A", "HMGN2", "FABP5", "PGK1",
"IL10RA", "LILRB4A", "CYCS", "SLC16A11", "SNRPD1", "SDF4", "PLP2", "CXCR6", "CALR",
"ITGAV", "GLPeakR1", "GPD2", "CCRL2", "NDUFB8", "ADAM8", "RANBP1", "SIVA1", "CALM3",
"DBI", "ATP5PF", "GM10282", "2310031A07RIK", "SEC11C", "GLDC", "SERPINB9", "ARSB",
"ATP5IF1", "ID2", "KLRD1", "PLAC8", "CISD1", "ACADL", "CD74", "PGAM1"), Exhausted_Yost_2019 = Yost.markers2$gene,
exhaustion_genes = c("TOX", "PDCD1", "LAG3", "TIGIT", "CASP8", "HAVCR2", "CTLA4",
"PTPN11", "CD160", "CD244"), Markers_exhaustion = c("PDCD1", "LAG3", "HAVCR2",
"KLRG1", "TIGIT", "CD244", "CD160", "BTLA", "CTLA4", "ENTPD1", "ID2"))
integrated.obj.IP <- subset(x = integrated.obj, subset = Timepoint == "IP")
integrated.obj.IP <- AddModuleScore_UCell(integrated.obj.IP, features = signatures)
## Warning: The following genes were not found and will be
## imputed to exp=0:
## * AOPEP,H1-4,H1-5,2810417H13RIK,AA467197,HIST1H2AP,D16ERTD472E,LILRB4A,GLPeakR1,GM10282,2310031A07RIK,AC092580.4
featnames <- paste0(names(signatures), "_UCell")
DotPlot(integrated.obj.IP, features = featnames, group.by = "Patient_id", cols = "RdBu") +
theme(text = element_text(size = 18), axis.text.x = element_text(angle = 45,
vjust = 1, hjust = 1)) + xlab("") + ylab("")
DotPlot(integrated.obj.IP, features = featnames, group.by = "Patient_id", cols = "RdBu") +
theme(text = element_text(size = 18), axis.text.x = element_text(angle = 45,
vjust = 1, hjust = 1)) + xlab("") + ylab("")
# New plots
integrated.obj.IP$Pt_CAR <- paste(integrated.obj.IP$Patient_id, integrated.obj.IP$Class1,
sep = "_")
DotPlot(integrated.obj.IP, features = featnames, group.by = "Pt_CAR", cols = "RdBu") +
theme(text = element_text(size = 18), axis.text.x = element_text(angle = 45,
vjust = 1, hjust = 1)) + xlab("") + ylab("")
integrated.obj.IP$Pt_CD <- paste(integrated.obj.IP$Patient_id, integrated.obj.IP$final_criteria,
sep = "_")
DotPlot(subset(integrated.obj.IP, final_criteria != "Unknown"), features = featnames,
group.by = "Pt_CD", cols = "RdBu") + theme(text = element_text(size = 18), axis.text.x = element_text(angle = 45,
vjust = 1, hjust = 1)) + xlab("") + ylab("")
DotPlot(integrated.obj.IP, features = featnames, group.by = "Class1", cols = "RdBu",
scale = FALSE) + theme(text = element_text(size = 18), axis.text.x = element_text(angle = 45,
vjust = 1, hjust = 1)) + xlab("") + ylab("")
sessionInfo()
## R version 4.3.0 (2023-04-21)
## Platform: aarch64-apple-darwin20 (64-bit)
## Running under: macOS Ventura 13.4.1
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: Europe/Madrid
## tzcode source: internal
##
## attached base packages:
## [1] grid stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] EnhancedVolcano_1.18.0 ggrepel_0.9.3 UCell_2.4.0
## [4] clusterProfiler_4.8.1 ReactomePA_1.44.0 rstatix_0.7.2
## [7] ggpubr_0.6.0 kableExtra_1.3.4 RColorBrewer_1.1-3
## [10] stringr_1.5.0 viridis_0.6.3 viridisLite_0.4.2
## [13] gghalves_0.1.4 dplyr_1.1.2 see_0.7.5
## [16] forcats_1.0.0 ggalluvial_0.12.5 ggplot2_3.4.2
## [19] SeuratObject_4.1.3 Seurat_4.3.0 knitr_1.43
##
## loaded via a namespace (and not attached):
## [1] matrixStats_0.63.0 spatstat.sparse_3.0-1
## [3] bitops_1.0-7 enrichplot_1.20.0
## [5] HDO.db_0.99.1 httr_1.4.6
## [7] webshot_0.5.4 tools_4.3.0
## [9] sctransform_0.3.5 backports_1.4.1
## [11] utf8_1.2.3 R6_2.5.1
## [13] lazyeval_0.2.2 uwot_0.1.14
## [15] withr_2.5.0 sp_1.6-0
## [17] graphite_1.46.0 gridExtra_2.3
## [19] progressr_0.13.0 cli_3.6.1
## [21] Biobase_2.60.0 formatR_1.14
## [23] spatstat.explore_3.2-1 scatterpie_0.2.0
## [25] labeling_0.4.2 sass_0.4.6
## [27] spatstat.data_3.0-1 ggridges_0.5.4
## [29] pbapply_1.7-0 systemfonts_1.0.4
## [31] yulab.utils_0.0.6 gson_0.1.0
## [33] DOSE_3.26.1 svglite_2.1.1
## [35] parallelly_1.35.0 rstudioapi_0.14
## [37] RSQLite_2.3.1 generics_0.1.3
## [39] gridGraphics_0.5-1 ica_1.0-3
## [41] spatstat.random_3.1-5 car_3.1-2
## [43] GO.db_3.17.0 Matrix_1.5-4
## [45] fansi_1.0.4 S4Vectors_0.38.1
## [47] abind_1.4-5 lifecycle_1.0.3
## [49] yaml_2.3.7 carData_3.0-5
## [51] SummarizedExperiment_1.30.1 qvalue_2.32.0
## [53] Rtsne_0.16 blob_1.2.4
## [55] promises_1.2.0.1 crayon_1.5.2
## [57] miniUI_0.1.1.1 lattice_0.21-8
## [59] cowplot_1.1.1 KEGGREST_1.40.0
## [61] pillar_1.9.0 fgsea_1.26.0
## [63] GenomicRanges_1.52.0 future.apply_1.11.0
## [65] codetools_0.2-19 fastmatch_1.1-3
## [67] leiden_0.4.3 glue_1.6.2
## [69] downloader_0.4 ggfun_0.0.9
## [71] data.table_1.14.8 vctrs_0.6.2
## [73] png_0.1-8 treeio_1.24.0
## [75] gtable_0.3.3 cachem_1.0.8
## [77] xfun_0.39 S4Arrays_1.0.4
## [79] mime_0.12 tidygraph_1.2.3
## [81] survival_3.5-5 SingleCellExperiment_1.22.0
## [83] ellipsis_0.3.2 fitdistrplus_1.1-11
## [85] ROCR_1.0-11 nlme_3.1-162
## [87] ggtree_3.8.0 bit64_4.0.5
## [89] RcppAnnoy_0.0.20 GenomeInfoDb_1.36.0
## [91] bslib_0.4.2 irlba_2.3.5.1
## [93] KernSmooth_2.23-21 colorspace_2.1-0
## [95] BiocGenerics_0.46.0 DBI_1.1.3
## [97] tidyselect_1.2.0 bit_4.0.5
## [99] compiler_4.3.0 rvest_1.0.3
## [101] graph_1.78.0 BiocNeighbors_1.18.0
## [103] xml2_1.3.4 DelayedArray_0.26.3
## [105] plotly_4.10.1 shadowtext_0.1.2
## [107] scales_1.2.1 lmtest_0.9-40
## [109] rappdirs_0.3.3 digest_0.6.31
## [111] goftest_1.2-3 spatstat.utils_3.0-3
## [113] rmarkdown_2.21 XVector_0.40.0
## [115] htmltools_0.5.5 pkgconfig_2.0.3
## [117] MatrixGenerics_1.12.0 highr_0.10
## [119] fastmap_1.1.1 rlang_1.1.1
## [121] htmlwidgets_1.6.2 shiny_1.7.4
## [123] farver_2.1.1 jquerylib_0.1.4
## [125] zoo_1.8-12 jsonlite_1.8.4
## [127] BiocParallel_1.34.2 GOSemSim_2.26.0
## [129] RCurl_1.98-1.12 magrittr_2.0.3
## [131] GenomeInfoDbData_1.2.10 ggplotify_0.1.0
## [133] patchwork_1.1.2 munsell_0.5.0
## [135] Rcpp_1.0.10 ape_5.7-1
## [137] reticulate_1.28 stringi_1.7.12
## [139] ggraph_2.1.0 zlibbioc_1.46.0
## [141] MASS_7.3-60 plyr_1.8.8
## [143] parallel_4.3.0 listenv_0.9.0
## [145] deldir_1.0-6 Biostrings_2.68.1
## [147] graphlayouts_1.0.0 splines_4.3.0
## [149] tensor_1.5 igraph_1.4.2
## [151] spatstat.geom_3.2-1 ggsignif_0.6.4
## [153] reshape2_1.4.4 stats4_4.3.0
## [155] evaluate_0.21 tweenr_2.0.2
## [157] httpuv_1.6.11 RANN_2.6.1
## [159] tidyr_1.3.0 purrr_1.0.1
## [161] polyclip_1.10-4 future_1.32.0
## [163] scattermore_1.1 ggforce_0.4.1
## [165] broom_1.0.4 xtable_1.8-4
## [167] reactome.db_1.84.0 tidytree_0.4.2
## [169] later_1.3.1 tibble_3.2.1
## [171] aplot_0.1.10 memoise_2.0.1
## [173] AnnotationDbi_1.62.1 IRanges_2.34.0
## [175] cluster_2.1.4 globals_0.16.2